var AlternateItens = function($obj){var _this = this;var _allItens = [];var _onFunction = null;var _offFunction = null;var _setFunction = function($fnc, $type){if(!$fnc)return;if(typeof($fnc) != 'function'){throw new Error('AlternateItens.setOnFunction ERROR: Parameter MUST be a function!\n$fnc: '+$fnc+' - '+typeof($fnc));return;}switch($type){case 'on':_onFunction = $fnc;break;case 'off':_offFunction = $fnc;break;}};var _onoffFunction = function($which,$clear,$type){var fnc = null;switch($type){case 'on':fnc = _onFunction;break;case 'off':fnc = _offFunction;break;default:return false;}if($clear !== false){_this.clear();}if(typeof($which) == 'number'){if(_allItens[$which]){return fnc(_allItens[$which]);}else{throw new Error('AlternateItens._onoffFunction ERROR: Item doesn\'t exists!\nItem number: '+$which+'. Maximum item: '+(_allItens.length-1));return false;}}else if(typeof($which) == 'object'){for(var i=0; i<_allItens.length; i++){if($which == _allItens[i]){return fnc($which);break;}}throw new Error('AlternateItens._onoffFunction ERROR: Item doesn\'t exists in the array!\nItem passed: '+$which);return false;}};this.clear = function(){for(var i=0; i<_allItens.length; i++){_offFunction(_allItens[i]);}};this.on = function($which,$clear){return _onoffFunction($which,$clear,'on');};this.off = function($which,$clear){return _onoffFunction($which,$clear,'off');};this.setItens = function($arr){if(typeof($arr) == 'string'){throw new Error('AlternateItens.setItens ERROR: Parameter MUST be an array!\n$arr: '+$arr);return;}_allItens = $arr;};this.getItens = function(){return _allItens;};_setFunction($obj.onFunction,'on');_setFunction($obj.offFunction,'off');if($obj.itens)this.setItens($obj.itens);};var UrlUtil = {_loc: document.location.href,getObj: function(){return document.location;},complete: function(){return this._loc;},protocol: function($url){$url = $url || this._loc;return $url.slice(0,$url.indexOf('//')-1);},host: function($url){$url = $url || this._loc;var index1 = $url.indexOf('//')+2;$url = $url.slice(index1);return $url.slice(0,$url.indexOf('/'));},completeHost: function($url){$url = $url || this._loc;return this.protocol($url)+'://'+this.host($url)+'/';},folder: function($url){$url = $url || this._loc;$url = $url.split('/');var newUrl = '';for(var i=3; i<$url.length; i++){if(i!=$url.length-1){newUrl += $url[i]+'/';}}return '/'+newUrl;},fileName: function($url){$url = $url || this._loc;var index1 = $url.indexOf('//')+2;$url = $url.slice(index1);$url = $url.slice($url.lastIndexOf('/')+1);if(this.query($url)){$url = $url.slice(0,$url.indexOf('?'));}else if(this.anchor($url)){$url = $url.slice(0,$url.indexOf('#'));}return $url || '';},query: function($url){$url = $url || this._loc;$url = $url.split('?');return ($url.length > 1 ? $url[1].split('#')[0] : false);},queryValue: function($name,$url){$url = $url || this._loc;var query = this.query($url);var queries = query.split('&');for(var i=0; i<queries.length; i++){if(queries[i].split('=')[0].toLowerCase() == $name.toLowerCase()){return queries[i].split('=')[1];break;}}return false;},anchor: function($url){$url = $url || this._loc;return ($url.split('#').length > 1) ? $url.split('#')[1] : false;},noAnchor: function($url){$url = $url || this._loc;return $url.split('#')[0];},noQuery: function($url){$url = $url || this._loc;return this.completeHost($url) + this.folder($url).slice(1) + this.fileName($url) + (this.anchor($url) ? '#'+this.anchor($url) : '');},uri: function($url){$url = $url || this._loc;return this.completeHost($url) + this.folder($url).slice(1) + this.fileName($url);}};;